三道简单的"单链表"问题,时间紧急,请熟悉C语文的朋友来作作

来源:百度知道 编辑:UC知道 时间:2024/05/24 09:56:20
表妹叫我帮做以下三道题目,看似不太难,因为我对C语言不太熟悉(一直用VB),而且时间也比较紧张,所以特来求助熟悉C语言的朋友,请帮我写下三题的代码,加一点注释,谢谢:

1.输入数列,以0为结束标志,生成“先进先出”单链表,输出表中各结点的值;再求表中结点的平均值、最大值、最小值
2.输入数列,以0为结束标志,生成“后进先出”单链表,输出表中各结点的值;再求表中首结点和尾结点的值。
3.输入数列,任选两种排序方法,将该数列中的数按从小到大的次序排序。

第一题:
struct s
{
char val;
struct s *next;
};

struct s *start=0,*temp=0;

push(char n)
{
struct s *q;
q=(struct s*)malloc(sizeof(struct s));
q->val=n;
q->next=0;
if(start==0)
{
start=q;
temp=q;
}
else
{
temp->next=q;
temp=q;
}

}
int count,max,min;
float ave;

main()
{
int i;
char a[100];
struct s *p;
printf("\n\ninput:");
scanf("%s",a);
for(i=0;i<100&&a[i]!='0';i++)
{
push(a[i]);
}
for(p=start;p!=0;p=p->next)
{
if(p==start)
{
count=1;
max=p->val;
min=p->val;
ave=p->val-48;
}
else
{
count++;
if(max<p->val)
max=p->val;
if(min>p->val)
min=p->val;
ave+=p->va